/*
全选思路
1.给 allselect 绑定事件
2.获取 当前  allselect 的状态 那变量结构
3.让单个商品的 选框 进行 装填跟随
4.让另一个 全选 也 同步状态

*/ 

$(".allSelect").click(function(){
    //获取当前 的 状态
    let status=$(this).prop("checked");
    //单项商品 做状态跟随
    $(".singlSelect").prop("checked",status);
    //另一个选框 状态同步:不用明确哪一个 统一重新设置
    $(".allSelect").prop("checked",status);
    allCount()
})

//全选 跟随思路
/*
    1.单项商品 选框 绑定事件
    2.如果  有 选中状态为true的 选框个数  和 单项商品选框个数 一致  那全选框 要做选中
        1.获取单项商品选框个数
        2.获取 选中状态为true的 个数
        3.两个个数 一致 就 全选框 设置状态为true

*/
$(".singlSelect").click(function(){
    let l1=$(".singlSelect").length
    let l2=$(".singlSelect:checked").length
    // console.log(`总个数${l1}`,`选中的个数${l2}`)
    if(l1==l2){
        $(".allSelect").prop("checked",true)
    }else{
        $(".allSelect").prop("checked",false) 
    }
    allCount()
})

/*
加:
    1.绑定 +span  的点击事件
    2.获取当前 input的值
    3.进行自增
    4.把自增完成的结果 放回去

*/ 
$(".addNum").click(function(){
    
    $(this).siblings(".reduce").css({
                                        "cursor":'pointer',
                                        "backgroundColor":''
                                    })
    let num=$(this).next("input").val()
    num++;
    $(this).next("input").val(num)
    count($(this))
    allCount()
    
})
/*
减: 逻辑同上  自减

*/ 
$(".reduce").click(function(){
    let num=$(this).prev("input").val()
    num--;
    if(num>=1){
        $(this).prev("input").val(num)
        
    }else{
        $(this).css({
            "cursor":'not-allowed',
            "backgroundColor":'gray'
        })
    }
    count($(this))
    allCount()
    
   
    
})
function count(obj){
    //拿到数量
    let num=obj.siblings("input").val()
    //拿到当前行 的 单价 
    let price=obj.closest("tr").find(".sPrice").text()

    //计算
    let result=(num*price).toFixed(2);
    //给当前行的 小计设置结果
    obj.closest("tr").find(".count").text(result)


}

//总计
/*
    只要有选中 就要进行总价的计算

    逻辑:
        拿到 所有 有选中状态的 单项 的 小计 和 商品个数
        小计累加 放到总价上
        数量累加 放到 以选商品中

    注意:
        全选事件 中 调用
        单选事件中 调用
        加法事件 中 调用
        减法法事件 中 调用

*/
function allCount(){
    //1.设置金额变量 和 个数变量
    let allNum=0;
    let allPrice=0;
    $(".singlSelect:checked").each(function(index,cur_checkbox){
        //利用循环 进行 累加 求和
        let num=Number($(cur_checkbox).closest("tr").find(".num").val())
        allNum+=num;
        let price=Number($(cur_checkbox).closest("tr").find(".count").text())
        allPrice+=price;
    })
    // console.log(`统计数量:${allNum}`,`统计金额${allPrice}`)
    //把数量放到 .aNum中
    $("#aNum").text(allNum)

    //把金额放到 #total
    $("#total").text(allPrice)



}